﻿//#include <iostream>
//
//using namespace std;
//
//int main() {
//	int i = 0;
//	int& ri = i;
//	const int ci = 42;		// 顶层const 
//	int* const p1 = &i;		// 顶层const 
//	const int* p2 = &ci;	// 底层const 
//	const int& ri1 = ci;	// 底层const 
//	const int& ri2 = i;		// 底层const 
//
//	auto j = ri;			// j类型为int 
//	j++;
//	auto k = i;				// k类型为int 
//	k++;
//
//	auto r1 = ci;			// r1类型为int，忽略掉顶层const 
//	r1++;
//	auto r2 = p1;			// r2类型为int*，忽略掉顶层const 
//	r2++;
//	auto r3 = p2;			// r3类型为const int*，保留底层const 
//	// (*r3)++;		// 报错 
//	
//	auto r4 = ri1;			// r4类型为int，因为ri1是ci的别名，ci本⾝的const是⼀个顶层const被忽略掉了
//	r4++;
//	
//	auto r5 = ri2;			// r5类型为int 
//	r5++;
//
//	const auto r7 = ci;		// r7类型为const int 
//	auto& r8 = ri1;			// r8类型为const int& 
//	auto& r9 = ri2;			// r9类型为const int& 
//	auto& r10 = ci;			// r10类型为const int& 
//	auto& r11 = ri;			// r11类型为int& 
//	//r7++;		// 报错 
//	//r8++;		// 报错 
//	//r9++;		// 报错 
//	//r10++;	// 报错 
//	r11++;
//	return 0;
//}